﻿//----------------------------------------------------------------
// Desc: 
// Edit: ShowLong, http://blog.csdn.net/showlong
//
// Date Created: 2012-05-29
//
// Update Date : 
//
// Copyright (c) Fuel4D (http://www.fuel4d.com), All rights reserved.
//
//----------------------------------------------------------------
#pragma once


// 从ARGB内存转为DXT内存
// .w,h ARGB内存图片的宽度与高度
// .src ARGB内存图片数据首地址
// .out 输出DXT数据容器
// .dxt_n DXT类型（支持 1，3，5，其它数字会失败）
// .mimap 是否输出mipmap层次
extern FAPI bool FARGBtoDXT(int w, int h, BYTE* src, FV_BYTE& out_dxt, int dxt_n, bool mimap);
// DXT转为ARGB（带验证）
// .dxt DDS图片内存
// .filename DDS图片文件路径
// .dst 存RGB数据的缓存，dst缓存的大小为tw*th*4
// .tw,th 必须和dxt解出的尺寸相同，否则解码失败
extern FAPI bool FDXTtoARGB_mem(const BYTE* buf, size_t size, BYTE* dst, size_t tw, size_t th);
extern FAPI bool FDXTtoARGB_file(const ACHAR* filename, BYTE* dst, size_t tw, size_t th);
// DXT转为ARGB（不验证）
extern FAPI bool FDXTtoARGB_mem_nc(const BYTE* buf, size_t size, FV_BYTE& out_buf, size_t& out_w, size_t& out_h);
extern FAPI bool FDXTtoARGB_file_nc(const ACHAR* filename, FV_BYTE& out_buf, size_t& out_w, size_t& out_h);
// 从文件加载贴图（支持PNG、JPG、JPEG、PSD、DDS）
extern FAPI bool FIMGtoARGB_mem(const BYTE* buf, size_t size, FV_BYTE& out_buf, size_t& out_w, size_t& out_h);
// 从文件加载贴图（支持TGA、PNG、JPG、JPEG、PSD，DDS文件请用前面的FDXTtoARGB_file相关函数）
extern FAPI bool FIMGtoARGB_file(const ACHAR* filename, FV_BYTE& out_buf, size_t& out_w, size_t& out_h);